<%# The license inside this block applies to this file.
# Copyright 2017 Google Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-%>
<%=
  method_decl('fetch_resource', ['module', 'link', ('kind' if object.kind?),
                                 'allow_not_found=True'])
%>
    auth = GcpSession(module, <%= quote_string(prod_name) -%>)
    return <%= method_call('return_if_object', ['module', 'auth.get(link)',
                                                ('kind' if object.kind?),
                                                'allow_not_found']) %>

<% unless object.nested_query.nil? -%>

def fetch_wrapped_resource(module, kind, wrap_kind, wrap_path):
    result = fetch_resource(module, self_link(module), wrap_kind)
    if result is None or wrap_path not in result:
        return None

    result = unwrap_resource(result[wrap_path], module)

    if result is None:
        return None

    if result['kind'] != kind:
        module.fail_json(msg="Incorrect result: {kind}".format(**result))

    return result
<% end -%>
